home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_08_04
/
8n04100a
< prev
next >
Wrap
Text File
|
1990-03-18
|
3KB
|
122 lines
************************************************************
Psuedo code for interrupt handler:
On keyboard interrupt do {
save context
if keyboard has input, save with work request to level3 queue
if block is ready {
reset indicator
add check_1st_blk to level2 queue
}
restore context
enable interrupts
return from interrupt
}
On timer interrupt do {
save context
if write ok flag set{ /*done with interrupts off to avoid clash */
initiate write
clear flag
}
enable interrupts
capture sample, save with work request to level2 queue
step minute counter, on overflow {
reset counter
put minute change work request in level3 queue
}
return from interrupt
}
Psuedo code for tasks
Analyze sample {
perform statistical analysis
if out of bounds {
compute correction
output correction
}
return
}
Check Block Pt 1{
compute partial checksum
save result with pt2 work request in level2 queue
return
}
Check Block Pt 2{
continue checksum
save result with pt3 work request in level2 queue
return
}
Check Block pt3 {
continue checksum
save result with pt4 work request in level2 queue
return
}
Check Block pt4 {
complete checksum
if ok, set write ok flag
return
}
Parse input {
save input parameter in command line buffer.
If input keystroke is a terminal symbol{
parse buffer;
output manual correction;
clear buffer;
}
return;
}
Minute change{
increment minutes-ones
add work request for digit change to minutes-ones to level4 queue
add work request for digit step level3 queue
on overflow {
add work request for digit change to minutes-tens to level 4 queue
add work request for digit step level3 queue
}
on tens overflow {
add work request for digit change to hours-ones to level 4 queue
add work request for digit step level3 queue
}
on hours ones overflow {
add work request for digit change to hours-tens to level 4 queue
add work request for digit step level3 queue
}
on hours-twelve overflow {
add work request for digit change to hours-ones to level 4 queue
for (i=0; i<8; i++)
add work request for digit step to level3 queue
add work request for digit change to hours-tens to level 4 queue
add work request for digit step to level 3 queue
}
}
digit change {
set multiplexor to select requested digit
}
digit step {
for (i=1; i<60; i++) {
add work request for one_pulse to level4 queue
}
}
one_pulse {
pulse stepping motor
busy-wait for 10 ms
return
}
****************************Listing 7***********************